feat(web): render GitHub assignees on stories - #161
Conversation
Facility already mirrors gh_issues.assignees end to end and ships it on both the pipeline and story-detail responses, but apps/web never read the field, so ownership was invisible without opening GitHub. - show @login chips (first + N) on the story row and story header, with a GitHub avatar that falls back to an initial when the browser can't reach github.com - add a "mine" filter on the Stories board matching the signed-in user's githubLogin
"mine" filters by assignee, an axis independent from stage — grouping it inline with the single-select stage tabs read as if it belonged to the same selection. Move it to the end of the row, set off with a vertical divider, so it reads as its own filter.
|
Pushed a follow-up commit (a98dd21) after manually walking through this on a local instance:
No behavior change to the filtering logic itself, just the grouping/placement. |
|
Thanks for the contribution! There are two ideas here worth preserving: visually separating the “mine” filter from the stage filters, since they are independent axes, and showing the complete assignee list on the story detail while keeping the board row compact. #171 now covers the underlying assignee rendering and filter behavior, while #175 covers avatars. Please reframe this PR as a focused follow-up containing only those distinct UI improvements, with the current Builder gate wiring from That would give this contribution a clear, useful scope without duplicating the other work. |
Summary
Closes #101.
Facility already mirrors
gh_issues.assigneesend to end — webhook sync,services/api/src/pipeline.ts, and bothPipelineStorySchema.assigneesandStoryDetailSchema.assignees— butapps/webnever read the field, soownership was invisible without opening GitHub.
@loginassignee chips on the story row (IssueRow) and the storydetail header, in the existing label/timestamp grammar. Several assignees
collapse to the first plus
+N; unassigned renders nothing (Backlog'scommon case), not a placeholder.
AssigneeChip: GitHub avatar (github.com/{login}.png, no new synccolumn needed) with an initial-letter fallback for deployments where the
browser can't reach
github.com.against the signed-in user's
githubLogin(from Show the signed-in GitHub user, and assign them on the issue and the PR #70).Test plan
bunx tsc --noEmit— cleanbunx vitest run(apps/web, full suite) — 67/67 passing, including newcoverage in
pipeline-story.test.tsfor the unassigned, +N, andavatar/fallback cases
bunx biome checkon touched files — clean